/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.unipar.oficina.controle.cadastros;

import br.com.unipar.oficina.modelo.cadastros.*;
import br.com.unipar.oficina.service.cadastros.CargoService;
import br.com.unipar.oficina.service.cadastros.ColaboradorService;
import java.io.IOException;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.event.AjaxBehaviorEvent;
import javax.inject.Named;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

/**
 *
 * @author Thiago Marques
 */
@Controller
@Scope("request")
@Named("colaboradorBean")
public class ColaboradorBean {

    private final ColaboradorService colaboradorService;
    private final CargoService cargoService;
    private Colaborador colaborador = new Colaborador();
    private List<Colaborador> colaboradores;
    private String matriculaConsulta;
    private String nomeConsulta;
    private Cargo cargo;
    private List<Cargo> cargos;

    @Autowired
    public ColaboradorBean(ColaboradorService colaboradorService, CargoService cargoService) {
        this.cargoService = cargoService;
        this.colaboradorService = colaboradorService;
    }

    @PostConstruct
    public void init() {
        cargos = colaboradorService.getCargos();
    }

    public void listaCargos(AjaxBehaviorEvent event) {
        colaboradores = colaboradorService.getColaboradores(cargo);
    }

    public String novo() {
        colaborador = new Colaborador();
        return "/gestao/colaboradorForm.jsf";
    }

    public void salvar(ActionEvent event) {
        try {
            colaboradorService.salvar(colaborador);
            FacesContext.getCurrentInstance().getExternalContext().redirect("colaboradorLista.jsf");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public String editar() {
        cargo = colaborador.getCargo();
        listaCargos(null);
        return "/gestao/colaboradorForm.jsf";
    }

    public void consultar(ActionEvent event) {
        colaboradores = colaboradorService.consultar(matriculaConsulta, nomeConsulta);
    }

    public void excluir() {
        colaboradorService.excluir(colaborador);
        colaboradores.remove(colaborador);
    }

    public Cargo getCargo() {
        return cargo;
    }

    public void setCargo(Cargo cargo) {
        this.cargo = cargo;
    }

    public List<Cargo> getCargos() {
        return cargos;
    }

    public void setCargos(List<Cargo> cargos) {
        this.cargos = cargos;
    }

    public Colaborador getColaborador() {
        return colaborador;
    }

    public void setColaborador(Colaborador colaborador) {
        this.colaborador = colaborador;
    }

    public List<Colaborador> getColaboradores() {
        return colaboradores;
    }

    public void setColaboradores(List<Colaborador> colaboradores) {
        this.colaboradores = colaboradores;
    }

    public String getMatriculaConsulta() {
        return matriculaConsulta;
    }

    public void setMatriculaConsulta(String matriculaConsulta) {
        this.matriculaConsulta = matriculaConsulta;
    }

    public String getNomeConsulta() {
        return nomeConsulta;
    }

    public void setNomeConsulta(String nomeConsulta) {
        this.nomeConsulta = nomeConsulta;
    }
    
    

}